The present invention relates to computer architectures and in particular to an improved computer architecture blending features of a Von Neumann computer and a dataflow execution computer.
In a common general-purpose computer, a sequence of stored instructions is executed in an instruction sequence controlled by a program counter. The instructions may perform operations on data (for example, add and multiply instructions) or may read data to control the flow of the program among instruction (for example, branch instructions). Each instruction is generally executable in sequence on a single integrated arithmetic logic unit. These architectures will be termed herein “Von Neumann architectures” or control flow architectures. Such computer architectures receive a program of instructions and initial data values for execution.
An alternative architecture, termed herein a “dataflow architecture”, represents programs and executes by modeling a flow of data between different functional units much like electrical data flowing between circuit elements that are wired together. The functional units execute in a sequence determined by the availability of data rather than according to a Von Neumann type program counter and generally the data processed by the dataflow architecture is operated on by many independent functional units as it flows among the functional units. The ability of many functional units to execute data simultaneously in a dataflow architecture makes dataflow architectures promising for implementing instruction level parallelism and thereby obtaining higher processing speeds than available with Von Neumann architectures where instructions are executed sequentially according to a program counter value.
Despite the potential advantages of dataflow architectures, dataflow architecture computers show no signs of replacing conventional Von Neumann machines for general computing tasks. Control flow speculation is difficult to implement with dataflow architectures and the intercommunication of data values between functional units can be costly in terms of time and hardware. The problem of compiling an arbitrary Von Neumann architecture program as a dataflow architecture program is challenging . . . .